りおんクロニクル


C# × クラウド(Azure Functions / Web API)|サーバーレス&REST API実務ガイド【2026年版】

Home【2026年版】C# / .NET入門と実践ガイド|基礎・業務アプリ開発・SQLite連携まで体系的に解説

C#でクラウドアプリを作る場合、 Azure Functions(サーバーレス)ASP.NET Core Web API(常駐API) が定番です。 バッチ・Webhook・軽量APIは Functions、 本格的なREST APIは Web API が向いています。

この記事でわかること
・Azure Functions(HTTPトリガー)の基本
・ASP.NET Core Web API の基本構成
・DI・設定・ローカル開発
・認証(APIキー / Bearer)
・Functions と Web API の使い分け
・業務アプリ向けクラウド構成の考え方

1. Azure Functions と Web API の違い

項目Azure FunctionsASP.NET Core Web API
特徴サーバーレス・イベント駆動常駐API・フルフレームワーク
課金実行時間・回数ベース常時稼働(App Service等)
向きバッチ・Webhook・軽量API本格REST API・大規模システム
スケール自動スケール◎スケール設定が必要

軽量・イベント駆動 → Functions API中心・長期運用 → Web API

2. Azure Functions(HTTPトリガー)の基本

■ 2-1. 最小のHTTPトリガー関数

using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;

public class HelloFunction
{
    private readonly ILogger _logger;

    public HelloFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<HelloFunction>();
    }

    [Function("Hello")]
    public HttpResponseData Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
    {
        _logger.LogInformation("Hello function triggered.");

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.WriteString("Hello from Azure Functions!");
        return response;
    }
}

URL例: https://<app-name>.azurewebsites.net/api/Hello?code=...(Functionキー)

■ 2-2. JSONレスポンス

public record HelloResponse(string Message, DateTime Timestamp);

[Function("HelloJson")]
public HttpResponseData RunJson(
    [HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestData req)
{
    var res = req.CreateResponse(HttpStatusCode.OK);
    var body = new HelloResponse("Hello", DateTime.UtcNow);
    res.WriteAsJsonAsync(body).Wait();
    return res;
}

3. Azure Functions の設定・DI

■ 3-1. Program.cs(.NET Isolated)

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Serilog;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureAppConfiguration((ctx, cfg) =>
    {
        cfg.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
    })
    .ConfigureServices((ctx, services) =>
    {
        services.AddSingleton<IMyService, MyService>();
    })
    .UseSerilog((ctx, cfg) =>
    {
        cfg.WriteTo.Console();
    })
    .Build();

host.Run();

通常の .NET アプリと同じ感覚で DI・設定を使えます。

4. ASP.NET Core Web API の基本

■ 4-1. 最小のWeb API(Minimal API)

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/hello", () => new { Message = "Hello Web API", Time = DateTime.UtcNow });

app.Run();

■ 4-2. コントローラベースのAPI

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpGet("{id}")]
    public ActionResult<UserDto> Get(int id)
    {
        return new UserDto(id, "Taro");
    }
}

public record UserDto(int Id, string Name);

5. 認証・認可の基本(APIキー / Bearer)

■ 5-1. Azure Functions の AuthorizationLevel

外部公開APIなら、APIMやFront Doorと組み合わせてBearer認証を載せるのが定番です。

■ 5-2. Web API + Bearerトークン(概念)

builder.Services.AddAuthentication("Bearer")
    .AddJwtBearer("Bearer", options =>
    {
        options.Authority = "https://login.microsoftonline.com/...";
        options.Audience = "api://your-api-id";
    });

app.UseAuthentication();
app.UseAuthorization();

app.MapGet("/secure", [Authorize] () => "Secure");

Azure AD / Entra ID と組み合わせると、企業向けAPIとして運用しやすくなります。

6. ローカル開発とデプロイの流れ

■ 6-1. Azure Functions

  1. Azure Functions プロジェクトを作成
  2. Azure Functions Core Tools でローカル実行
  3. Storage Emulator or Azurite を利用
  4. VS / CLI から Azure に発行

■ 6-2. Web API

  1. ASP.NET Core Web API プロジェクトを作成
  2. Swagger でローカル確認
  3. App Service / Container Apps にデプロイ

どちらも「ローカルで動かしてからクラウドへ」が基本です。

7. Functions と Web API の使い分けパターン

「APIの入口はWeb API、裏側のバッチはFunctions」という構成もよくあります。

8. 業務アプリ向けベストプラクティス

まとめ:C# × Azure Functions / Web API で“クラウド常識”を一気に押さえる

「まずは小さくクラウドに出したい」「将来拡張できるAPI基盤が欲しい」 というニーズに対して、 C# × Azure Functions / Web API は非常に相性の良い組み合わせです。 この記事をベースに、あなたのプロジェクトに合ったクラウド構成を設計してみてください。

前のページ  次のページ